맨위로가기

유니버설 바이너리

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

유니버설 바이너리는 macOS에서 여러 아키텍처에서 실행될 수 있도록 설계된 실행 파일 형식이다. NeXTSTEP에서 시작되어 macOS로 이어졌으며, 초기에는 68k, PowerPC 등 여러 아키텍처를 지원했다. 애플은 Xcode를 통해 유니버설 바이너리 생성을 지원했으며, 인텔과 PowerPC의 32비트 및 64비트 아키텍처를 모두 지원하도록 발전했다. 유니버설 바이너리는 여러 플랫폼을 위한 코드를 포함하여 단일 플랫폼 바이너리보다 크지만, 실행 시 해당 플랫폼에 맞는 바이너리만 로드되어 램 공간을 효율적으로 사용한다. 2020년 애플 실리콘으로의 전환을 지원하기 위해 유니버설 2 바이너리가 도입되었다. macOS는 유니버설 바이너리를 처리하는 `lipo` 명령줄 도구를 제공한다.

더 읽어볼만한 페이지

  • MacOS - 메일 (애플)
    메일은 애플에서 개발한 이메일 클라이언트로, macOS에 통합되어 다양한 기능과 인터페이스 변화를 거쳤으며, iCloud 동기화, 이메일 추적 차단, 이메일 전송 취소, 예약 발송 등을 지원한다.
  • MacOS - 개러지밴드
    애플이 개발한 개러지밴드는 로직 프로 기술을 기반으로 한 음악 제작 소프트웨어로, 가상 악기, MIDI 편집 기능, 팟캐스트 제작, 악기 레슨 등 다양한 기능을 제공하며 macOS와 iOS에서 아마추어부터 전문가까지 폭넓게 사용된다.
유니버설 바이너리
설명
단일 이진 파일은 여러 아키텍처에서 실행할 수 있다.
단일 이진 파일은 여러 아키텍처에서 실행할 수 있다.
개요
유형실행 파일, 라이브러리
개발애플
확장자.app (응용 프로그램)
.dylib (동적 라이브러리)
기타 실행 파일 유형
MIME 형식application/octet-stream
플랫폼
아키텍처PowerPC
x86
ARM
운영 체제macOS
역사
도입 시기Mac OS X 10.4
도입 목적애플의 프로세서 아키텍처 전환 지원
대체 기술Rosetta (파워PC 에뮬레이션)
상세 정보
특징여러 아키텍처 지원을 위해 여러 개의 코드 리소스를 포함하는 파일 포맷
각 리소스는 특정 아키텍처에 맞게 컴파일된 실행 코드 또는 리소스를 포함
팻 바이너리(Fat Binary)라고도 불림
장점개발자는 여러 아키텍처를 지원하는 단일 응용 프로그램을 쉽게 배포 가능
사용자는 자신의 시스템 아키텍처에 최적화된 코드를 자동으로 실행
단점각 아키텍처에 대한 코드를 모두 포함하므로 파일 크기가 커짐
더 많은 디스크 공간 차지 및 메모리 사용량 증가 가능성
지원 중단macOS에서 파워PC 지원 중단 이후 중요성 감소
Rosetta와 같은 에뮬레이션 기술로 대체
최신 동향ARM 기반 애플 실리콘 맥으로 전환되면서 다시 중요해짐
기존 x86 기반 응용 프로그램을 애플 실리콘에서 실행하기 위해 사용
참고 자료Firefox 4 for Mac OS X: Under the Hood
Mac OS X Universal Logo: Guidelines for Mac OS X Universal Logo Licenses
Mac OS X: 64-bit kernel frequently asked questions
Does Mac OS X 10.7 "Lion" run on Macs with a 32-bit EFI? How does the performance of Mac OS X 10.7 "Lion" compare to Mac OS X 10.6 "Snow Leopard" in "real-world" tests? @ EveryMac.com
This is Apple's roadmap for moving the first Macs away from Intel

2. 역사

넥스트스텝의 "멀티 아키텍처 바이너리"에서 시작된 유니버설 바이너리 개념은 Mac OS X의 주요 아키텍처 기반이다. NeXTSTEP은 하나의 실행 파일 이미지가 모토로라의 m68k, 인텔의 x86, 썬 마이크로시스템스의 SPARC, 휴렛 팩커드PA-RISC를 포함한 여러 아키텍처에서 실행될 수 있도록 지원했다. NeXTSTEP과 macOS는 유니버설 바이너리의 기반이 되는 바이너리 형식으로 Mach-O 아카이브를 사용한다.

엑스코드 2.1은 이러한 파일의 생성을 지원했다. 프로세서 독립성을 염두에 두고 개발된 간단한 응용 프로그램은 유니버설 바이너리로 컴파일하기 위해 거의 변경이 필요하지 않을 수 있지만, 아키텍처별 기능을 활용하도록 설계된 복잡한 응용 프로그램은 상당한 수정이 필요할 수 있다. 다른 개발 도구를 사용하여 처음부터 빌드된 응용 프로그램은 추가적인 수정이 필요할 수 있다. 이러한 이유로 인텔 기반 매킨토시 컴퓨터 도입과 타사 응용 프로그램의 유니버설 바이너리 형식 지원 사이에 지연이 발생했다. 애플이 이전에 발표한 일정보다 몇 달 앞서 인텔 기반 컴퓨터를 출시한 것도 이러한 격차의 또 다른 요인이었다.

엑스코드 2.4는 4개의 아키텍처 바이너리(인텔과 PowerPC 모두 32비트 및 64비트)를 생성할 수 있도록 했다.

2. 1. 팻 바이너리 (Fat Binary)

애플은 1990년대 중반 68k 프로세서에서 PowerPC로 전환하는 과정에서 팻 바이너리 기술을 사용했다. 팻 바이너리는 여러 플랫폼을 지원하는 코드를 포함하여 파일 크기가 컸다.

OS X의 전작인 넥스트스텝은 팻 바이너리를 지원하여 하나의 응용 프로그램 번들이 모토로라 m68k, 인텔 x86, 썬 마이크로시스템스 SPARC, 휴렛 패커드 PA-RISC 등 여러 아키텍처에서 실행될 수 있었다.[1] 이 유니버설 바이너리의 기반이 되는 바이너리 포맷인 Mach-O 아카이브는 넥스트스텝의 팻 바이너리에 사용된 포맷과 동일하다.[1]

2. 2. 유니버설 바이너리 (Universal Binary)

애플은 1990년대 중반 68k 프로세서에서 PowerPC로 전환할 때 비슷한 기술을 사용했다. 이 실행 파일들은 파일 크기가 커서 팻 바이너리(뚱뚱한 이진 파일)라고 불렸다.[1]

OS X의 이전 버전인 넥스트스텝은 여러 아키텍처에서 실행될 수 있는 팻 바이너리를 지원했는데, 여기에는 모토로라의 m68k, 인텔의 x86, 썬 마이크로시스템스의 SPARC, 휴렛 팩커드PA-RISC가 포함된다.[2] 이 유니버설 바이너리의 기반이 되는 바이너리 포맷인 Mach-O 아카이브는 넥스트스텝의 팻 바이너리에 사용된 포맷과 동일하다.[2]

애플의 엑스코드 2.1은 이러한 유니버설 바이너리 파일들을 만드는 기능을 지원하기 시작했다.[3] 엑스코드 2.4는 더 나아가 32비트 및 64비트의 인텔 및 PowerPC 아키텍처를 모두 지원하는 바이너리를 생성할 수 있게 하여, 하나의 실행 파일이 OS X 기기의 모든 CPU 기능을 사용할 수 있게 했다.[4]

2. 3. 유니버설 2 (Universal 2)

2020년 6월 22일, 애플은 macOS 빅서를 기점으로 인텔 x86-64 기반 프로세서에서 ARM64 기반 애플 실리콘으로 2년 간 전환을 진행한다고 발표하였다. 이러한 전환을 지원하기 위해 새로운 유니버설 2 바이너리가 도입되어, 응용 프로그램들이 x86-64 기반 프로세서나 ARM64 기반 프로세서에서 모두 실행될 수 있게 되었다.[15]

3. 동기

서로 다른 플랫폼에서 실행 가능한 프로그램을 만드는 방법에는 두 가지가 있다. 첫째는 x86 시스템용 바이너리와 PowerPC용 바이너리를 각각 제공하는 것이다. 그러나 이는 두 플랫폼의 차이를 모르는 사용자에게 매우 불편하다. 다른 대안은 에뮬레이터를 사용하는 것이다. 이 방법은 실행 속도가 느리지만, 유니버설 바이너리나 두 플랫폼 모두 호환되게 컴파일된 바이너리 파일이 나오기 전까지는 유일한 대안이었다. (로제타 참고)

유니버설 바이너리는 각 플랫폼을 위한 코드가 분리되어 있어, 한 플랫폼만 지원하는 바이너리 파일보다 보통 더 많은 공간을 차지한다. 하지만 실행이 목적이 아닌 자원들은 두 아키텍처에서 공유되기 때문에, 보통 두 바이너리 파일을 합친 것보다는 작다. 실행하는 플랫폼에 맞는 바이너리만 메모리에 적재되므로 추가적인 램 공간 또한 차지하지 않는다.

x86 아키텍처용으로 컴파일된 바이너리와 PowerPC 아키텍처용으로 컴파일된 바이너리, 이렇게 두 개의 별도 바이너리를 제공하는 방법은 두 아키텍처의 차이점을 모르는 소프트웨어 사용자에게 혼란을 줄 수 있다. 하지만, 향상된 문서화 또는 하이브리드 CD를 사용하여 이 문제를 해결할 수 있다. 다른 아키텍처를 실행하는 시스템에서 한 아키텍처를 에뮬레이션하는 것은 성능 저하를 초래하며, 로제타와 같이 유니버설 바이너리 또는 특별히 컴파일된 바이너리를 사용할 수 있을 때까지 임시 해결책으로 간주된다.

유니버설 바이너리는 컴파일된 코드의 여러 복사본을 저장해야 하므로 단일 플랫폼 바이너리보다 크다. 하지만 두 아키텍처에서 일부 실행 불가능한 리소스를 공유하기 때문에, 결과적으로 생성된 유니버설 바이너리의 크기는 두 개별 바이너리의 결합된 크기보다 작을 수 있으며, 보통 작다. 또한 두 복사본 중 실행을 위해 하나만 로드되므로 추가 RAM을 필요로 하지 않는다.

4. 유니버설 응용 프로그램

2005년 WWDC 이후 많은 소프트웨어 개발자들이 자사 제품에 대한 유니버설 바이너리 업데이트를 제공했다. 2008년 12월 기준으로 애플 웹사이트에는 7,500개 이상의 유니버설 응용 프로그램이 등재되었다.[6]

2007년 4월 16일, 어도비 시스템즈는 유니버설 바이너리 형식의 첫 번째 응용 프로그램 제품군인 어도비 크리에이티브 스위트 3의 출시를 발표했다.[7]

2006년부터 2010년까지, 쿼크익스프레스, 애플의 파이널 컷 스튜디오, 어도비 크리에이티브 스위트, 마이크로소프트 오피스 2008, 쇼크웨이브 플레이어 버전 11을 포함한 많은 맥 OS X 응용 프로그램이 유니버설 바이너리 형식으로 이식되었다. 이후 대부분은 인텔 전용 앱으로 제작되었다.

5. iOS에서의 활용

애플은 여러 차례에 걸쳐 아키텍처 공존 상황에서 iOS 애플리케이션에 유니버설 바이너리와 동일한 바이너리 형식을 기본적으로 사용해왔다. 2010년경 armv6-armv7-armv7s 전환 시기와 2016년경 armv7-arm64 전환 시기가 그 예이다. App Store는 바이너리를 자동으로 씬닝(thins)한다. 이 관행에 대한 상표명은 따로 없는데, 이는 개발자에게만 관련된 사항이기 때문이다.[8]

6. 도구

macOS는 유니버설 바이너리를 처리하는 `lipo` 명령줄 도구를 기본으로 제공한다.[14] 이 도구를 사용하면 여러 아키텍처용 바이너리를 결합하여 유니버설 바이너리를 생성하거나, 유니버설 바이너리에 저장된 아키텍처 종류를 확인하거나, 특정 아키텍처용 바이너리만 제거할 수 있다. 유닉스 계열 시스템의 file 명령은 Mach-O 유니버설 바이너리를 식별하고 지원하는 아키텍처를 보고할 수 있다.[10]

참조

[1] 웹사이트 Firefox 4 for Mac OS X: Under the Hood https://joshaas.word[...] 2010-11-10
[2] 웹사이트 Mac OS X Universal Logo: Guidelines for Mac OS X Universal Logo Licenses https://developer.ap[...] Apple Inc. 2007-06
[3] 웹사이트 Mac OS X: 64-bit kernel frequently asked questions http://support.apple[...] Apple Inc. 2012-10-04
[4] 웹사이트 Does Mac OS X 10.7 "Lion" run on Macs with a 32-bit EFI? How does the performance of Mac OS X 10.7 "Lion" compare to Mac OS X 10.6 "Snow Leopard" in "real-world" tests? @ EveryMac.com https://everymac.com[...] Kyle Media 2017-10-06
[5] 웹사이트 This is Apple's roadmap for moving the first Macs away from Intel https://arstechnica.[...] 2020-06-22
[6] 웹사이트 Macintosh Products Guide: Universal Applications http://guide.apple.c[...] Apple Computer
[7] 웹사이트 Adobe Ships Creative Suite 3 http://www.adobe.com[...] Adobe Systems 2007-04-16
[8] 웹사이트 lipo - iOS fat binaries and thinning out https://stackoverflo[...]
[9] 웹사이트 Apple announces macOS 11, "Big Sur," with an emphasis on design https://arstechnica.[...] 2020-06-22
[10] 웹사이트 Mac OS X: Trimming fat from Mach-O fat files http://www.theconsul[...] theconsultant.net 2005-09-06
[11] 웹사이트 This is Apple's roadmap for moving the first Macs away from Intel https://arstechnica.[...] 2022-02-16
[12] 뉴스 IntelからArmへのシームレスな移行を実現する「macOS Big Sur」 - PC Watch https://pc.watch.imp[...] PC Watch
[13] 뉴스 ユニバーサルバイナリ再登板ということは「lipo」の出番かも - 新・OS X ハッキング!(268) | マイナビニュース https://news.mynavi.[...] マイナビニュース
[14] 문서 Building a Universal macOS Binary | Apple Developer Documentation https://developer.ap[...] Apple Developer Documentation
[15] 웹인용 This is Apple’s roadmap for moving the first Macs away from Intel https://arstechnica.[...] 2020-06-22



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com